#  列表
# 1.列表的创建和基本使用
# 2.列表切片
# 3.列表生成式

#  列表基本使用
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 以下为基本使用 栈 pop 弹出一个尾元素 append 尾部添加元素
print(list1)
list1.pop()
print(list1)
list1.append(10)
print(list1)

#  pop(1) 弹出索引为1的数据

list1.insert(1,11)
print(list1)
list1.reverse()
print(list1)
list1.sort()
print(list1)
list1.clear()
print(list1)

move = ["go","name","go"]
print(move)
move.remove("go")
print(move)

# 访问元素 [1] 正向位置： 0 到 N-1  逆向：-1 到 -N
print(move[1])
print(move[-1])


print("----------------------切片--------------------------")
#  切片
list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list3)
var = list3[0:8:1]
#  [start:end:stride] 第一个元素的位置是start 第二个就是start+stride < end
print(var)

print(list3[-1:-6:-1])

print("----------------------列表生成式--------------------------")

# 列表生成式  [表达式 for 变量 in 可迭代对象 if 条件]
# 表达式：对每个元素进行处理，可以是变量本身，也可以是某种运算。
# for 变量 in 可迭代对象：遍历一个可迭代对象（如列表、字符串、range 等）
# if 条件（可选）：添加筛选条件，只有满足条件的元素才会被处理。

list2 = [i**2 for i in range(10)]
print(list2)

for item in list2:
    print(item)

items = [i if i % 3 == 0 or i % 5 == 0 else None for i in range(1, 5) ]
print(items)

